{-# OPTIONS -Wall #-}

--------------------------------------------------------------------------------
-- |
-- Module      :  Language.GLSL.Token
-- Copyright   :  (c) Stephen Tetley 2014
-- License     :  BSD3
--
-- Maintainer  :  Stephen Tetley <stephen.tetley@gmail.com>
-- Stability   :  highly unstable
-- Portability :  GHC
--
-- Token data type for the Alex lexer.
-- 
--------------------------------------------------------------------------------


module Lambola.IDL.Token 
  (

    IDLToken(..)

  ) where

data IDLToken 
    -- keywords
    = TK_KW_any
    | TK_KW_attribute
    | TK_KW_boolean
    | TK_KW_case
    | TK_KW_char
    | TK_KW_const
    | TK_KW_context
    | TK_KW_default
    | TK_KW_double
    | TK_KW_enum
    | TK_KW_exception
    | TK_KW_FALSE
    | TK_KW_float
    | TK_KW_in
    | TK_KW_inout
    | TK_KW_interface
    | TK_KW_local
    | TK_KW_long
    | TK_KW_module
    | TK_KW_native
    | TK_KW_Object
    | TK_KW_octet
    | TK_KW_oneway
    | TK_KW_out
    | TK_KW_raises
    | TK_KW_readonly
    | TK_KW_sequence
    | TK_KW_short
    | TK_KW_string
    | TK_KW_struct
    | TK_KW_switch
    | TK_KW_TRUE
    | TK_KW_typedef
    | TK_KW_unsigned
    | TK_KW_union
    | TK_KW_void

    -- 
    | TK_identifier String
    | TK_LIT_integer    Integer
    | TK_LIT_string     String
    | TK_LIT_character  Char
    | TK_LIT_floating_pt Double

    -- operators
    | TK_OP_bar
    | TK_OP_caret
    | TK_OP_ampersand
    | TK_OP_shiftl
    | TK_OP_shiftr
    | TK_OP_plus
    | TK_OP_minus
    | TK_OP_mult
    | TK_OP_divide
    | TK_OP_modulo
    | TK_OP_tilde

    -- punctuators
    | TK_P_semicolon
    | TK_P_lbrace
    | TK_P_rbrace
    | TK_P_double_colon
    | TK_P_colon
    | TK_P_comma
    | TK_P_equal
    | TK_P_lparen
    | TK_P_rparen
    | TK_P_langle
    | TK_P_rangle
    | TK_P_lsquare
    | TK_P_rsquare

    -- EOF
    | TK_EOF
  deriving (Eq,Show)



        